package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**
 * <p>
 * 课程基本信息Api接口
 * </p>
 *
 * @Description:
 */
@Api(value = "课程基本信息Api接口", tags = "内容-课程基本业务信息Api接口", description = "课程基本业务信息Api接口")
public interface CourseBaseApi {

    @ApiOperation("分页条件查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseModel model);

    @ApiOperation("添加课程基础信息")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);

    @ApiOperation("根据id查询课程基础信息")
    CourseBaseDTO getCourseBaseById(Long courseBaseId);

    @ApiOperation("根据id修改课程基础信息")
    CourseBaseDTO modifyCourseBaseById(CourseBaseVO courseBaseVO);

    @ApiOperation("根据id删除课程信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程id值", required = true, paramType = "path")
    void removeCourseBase(Long courseBaseId);

    @ApiOperation("教学机构提交课程信息")
    void submitCourseBase(Long courseBaseId);

    @ApiOperation("课程预览")
    Object preview(Long courseBaseId, Long companyId);

    @ApiOperation("课程发布")
    void publish(Long courseBaseId);
}
